package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//实现自定义拦截器的时候我们要实现接口implements WebMvcConfigurer
//重写addInterceptors方法

@Configuration
public class AppConfig implements WebMvcConfigurer {

    @Bean
    public BCryptPasswordEncoder getBCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }
//@Gonfiguration:
//表明当前类是一个配置类，被注解的类内部包含有一个或多个被Bean注解的方法，用于构建bean定义，初始化Spring容器。
//eBean注解:
//用于告诉方法，产生一个Bean对象，然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次，
//随后这个Spring将会将这个Bean对象放在自己的I0C容器中。
//SpringlOC容器管理一个或者多个bean,这些bean都需要在Configuration注解下进行创建，
//在一个方法上使用Bean注解就表明这个方法需要交给Spring进行管理。

    //设置上传文件是否登录的拦截规则
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MusicInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/user/login")
                .excludePathPatterns("/user/login2")
                .excludePathPatterns("login.html")
                .excludePathPatterns("/hhhh/test")
                .excludePathPatterns("/**/*.css")
                .excludePathPatterns("/**/*.js")
                .excludePathPatterns("/**/*.jpg")
                .excludePathPatterns("/**/*.png")
                .excludePathPatterns("/favicon.ioc/**");
    }
}
